My Smart Volume Profile – Fixed
Title: 🔹 My Smart Volume Profile – Fixed
Description:
Lightweight custom Volume Profile showing POC, VAH, and VAL levels from recent bars. Highlights the value area, marks price touches, and supports optional alerts.
Developer Note:
Created with precision and simplicity by Magnergy
Search in scripts for "volume profile"
My Smart Volume Profile – Fixed
Title: 🔹 My Smart Volume Profile – Fixed
Description:
Lightweight custom Volume Profile showing POC, VAH, and VAL levels from recent bars. Highlights the value area, marks price touches, and supports optional alerts.
Developer Note:
Created with precision and simplicity by Magnergy
My Smart Volume Profile – Fixed
Title: 🔹 My Smart Volume Profile – Fixed
Description:
Lightweight custom Volume Profile showing POC, VAH, and VAL levels from recent bars. Highlights the value area, marks price touches, and supports optional alerts.
Developer Note:
Created with precision and simplicity by Magnergy
Simple Volume Profile with POC (Daily/4H Sessions) [Enhanced]Simple Volume Profile with a Point of Control (POC). The script does the following:
Accumulates volume in user-defined “bins” (price buckets) for a session.
Resets the volume accumulation each new “session”:
On a Daily chart, it considers weekly sessions (resets each Monday).
On a 4H chart, it considers daily sessions (resets at the start of each trading day).
Finds the Point of Control (the price bin with the highest accumulated volume).
Plots the histogram and the POC line on the chart.
Intraday Volume Profile [BigBeluga]The Intraday Volume Profile aims to show delta volume on lower timeframes to spot trapped shorts at the bottom or trapped longs at the top, with buyers pushing the price up at the bottom and sellers at the top acting as resistance.
🔶 FEATURES
The indicator includes the following features:
LTF Delta precision (timeframe)
Sensibility color - adjust gradient color sensitivity
Source - source of the candle to use as the main delta calculation
Color mode - display delta coloring in different ways
🔶 DELTA EXAMPLE
In the image above, we can see how delta is created.
If delta is positive, we know that buyers have control over sellers, while if delta is negative, we know sellers have control over buyers.
Using this data, we can spot interesting trades and identify trapped individuals within the candle.
🔶 HOW TO USE
In the image above, we can see how shorts are trapped at the bottom of the wick (red + at the bottom), leading to a pump also called a "short squeeze."
Same example as before, but with trapped longs (blue + at the top).
This can also work as basic support and resistance, for example, trapped shorts at the bottom with positive delta at the bottom acting as strong support for price.
Users can have the option to also display delta data within the corresponding levels, showing Buyers vs Sellers for more precise trading ideas.
NOTE:
User can only display the most recent data for the last 8 buyers and sellers.
It is recommended to use a hollow candle while using this script.
Ice Cream Volume Profile [Visible range]While exploring the new Pine Script feature, Polylines, I've created a fun project called the
Ice Cream Volume Profile for the visible range.
This fun project serves several purposes:
It displays the level at which the most trades (volume) occur.
It provides Delta volume information.
It counts how many times a bar closed within this level.
It assists in drawing support and resistance zones.
It aids in interpreting volume data.
The top part of the ice cream cone changes color as follows:
Green: When the bullish volume exceeds 55% of the total volume.
Red: When the bearish volume surpasses 55% of the total volume.
Yellow: When neither Green nor Red exceeds 55% of the total volume.
Polylines are an excellent feature that enables us to create even more intriguing visuals in Pine Script.
Zanger Volume Profile ZVR v1This is an attempt to make a zanger volume profile indicator, it needs improvement and some sort of forward looking volume estimator.
Rotation Factor: Buy/Sell Pressure for Market/Volume ProfileRotation Factor is a simple formula to figure out the buy and sell pressure of the overall day. Rotation Factor is usually combined with Market Profile or Volume Profile analysis. It is designed to be used on the 30min timeframe with a 1D interval reset. It can be used on other timeframes, but results will vary. Some Rotation Factor traders like to use it on a daily with a 1M interval reset for longer term trading.
The formula is very clean because it only focuses on price action, highs and lows. The formula is as follows:
Current Bar makes Higher High and Higher Low +2 points
Current Bar makes Lower High and Lower Low -2 Points
Current Bar makes Higher High and Lower Low 0 Points
Current Bar makes Lower High and Higher Low 0 Points
Current High and Previous High are Equal and Higher Low +1 Points
Current Bar makes Higher High but Current and Previous lows are equal +1 Points
Current Bar makes Lower High but Current and Previous lows are equal -1 Points
Current High and Previous High are Equal and Lower Low -1 Points
I hope you enjoy this indicator, if you have any questions let me know in the comments.
Poor man's volume profileThis is an attempt to get something more or less similar to the volume profile for free.
The code is generated using a template. To change the settings, you may need to regenerate the code. The code has a link to the repository with the template.
(SM3) Volume Profile Tool-kit1st pine script. It is a work in progress. I use this to mark previous day high and low value areas as well as overnight volume profile for NYSE open strategy.
Volume Profile: Intra-bar VolumeThis indicator was developed as part of a free blog post tutorial on the Backtest-Rookies website for detailed code commentary, head over there.
Scope
The indicator shall attempt to do the following:
Look at a lower time-frame. E.g 5 minutes when on a 1-hour chart.
Create a function to loop through through candles and make an assessment.
If the candle it closed up, the volume will be categorized as buying volume. Conversely, if it closed down, the volume will be categorized as selling volume
The function will then be passed to the security() function to run on a lower timeframe.
All buying volume and selling volume from the lower time-frame shall be summed and displayed on the main chart.
Important Note
This indicator will not give you genuine buying or selling volume. It simply follows the assumption that if price closed up, there must have been more buyers than sellers and if it closed down we assume the opposite.
Usage
In order to use this indicator, users will need to calculate how many lower time-frame bars are contained in the time-frame on the main chart. So for example, the default settings are configured for the indicator to be run on the 1H chart. As a result, we need to set the "Bars on Lower Timeframe" input to 12. This is because there are 12 x 5-minute bars in 60 minutes.
VP-Period with Previous Day Levels & Historical POC# Volume Profile with Previous Day Levels & Historical POCs
## Description
Comprehensive indicator combining Volume Profile analysis, previous day levels, and historical POC (Point of Control) levels for advanced technical analysis.
## Key Features
### Volume Profile
- **Customizable period**: 3 to 500 days
- **Calculation resolution**: 400 to 700 points
- **Current VPOC**: Point of Control line for current period
- **Volume bars**: graphical display of volume profile distribution
### Historical POCs
- **POC history**: up to 20 previous days
- **Time labels**: shows how many days ago for each POC
- **Dashed lines**: easy identification of historical levels
### Previous Day Levels (last 5 days)
- **High/Low**: daily highs and lows
- **Midpoint**: 50% level (High+Low)/2
- **Open/Close**: opening and closing prices
- **Progressive thickness**: day 1 thicker, decreasing for previous days
## Customization
- Fully configurable colors for each element
- Toggle on/off switches for every component
- Different line styles (solid, dashed, dotted)
## Usage
Perfect for traders using volume analysis and support/resistance based on previous daily levels. Ideal for identifying key zones and significant breakout points.
Volume Profile + Price Action Strategy (POC-based)This indicator combines volume dynamics, price action patterns, and a simplified Point of Control (POC) to highlight potential high-probability trade zones.
🔍 Key Features
POC-Based Logic
Plots the POC from the most recent closed 10-minute candle as a horizontal level for intraday structure.
Volume Spike Detection
Highlights unusual activity based on volume compared to the average of the last N candles.
Effort vs. Result Analysis
Based on Wyckoff-inspired logic:
Absorption: Large volume, small body → possible buyer/seller absorption
False Move: Small volume, large body → potential fakeout
Price Action Recognition Detects:
Inside Bars
Pin Bars
Engulfing Candles
Signal Highlights
🔺 Absorption Signals (below bar, teal triangle)
🔻 False Move Signals (above bar, orange triangle)
🔷 POC Line
⚙️ Customizable Inputs
You can control signal sensitivity with these inputs:
Volume Spike Multiplier
Raise to filter only extreme volume spikes
→ Recommended: 2.0 to 3.0 for cleaner setups
Absorption Body Ratio
Lower to detect only very small bodies (tight candles)
→ Try 0.3 to 0.4 for stricter absorption logic
False Move Body Ratio
Raise to catch only large candles on low volume
→ Use 2.0+ to filter weak moves
🧠 How to Use
Use in confluence with:
Support/Resistance
VWAP or moving averages
Session opens/closes
Best on 10-minute charts, but adjustable
✅ Signal Tuning Tips
Want fewer but cleaner signals?
Increase Volume Spike Multiplier: 2.5+
Decrease Absorption Body Ratio: 0.3
Increase False Move Ratio: 2.0+
Want more frequent signals?
Lower Volume Multiplier: 1.2–1.5
Raise Absorption Ratio: 0.6+
Lower False Move Ratio: 1.2–1.4
📊 Recommended Timeframe
Optimized for 10-minute charts
Works intraday, especially around session opens and POC re-tests
⚠️ Disclaimer
This script is for educational and informational purposes only. It does not constitute financial advice or a recommendation to buy or sell any asset. Past performance is not indicative of future results. Always do your own research and consult a licensed financial advisor before making trading decisions.
Use at your own risk.
Volume Profile Volume Delta OI Delta [Kioseff Trading]Hello!
This script serves to distinguish volume delta for any asset and open interest delta for Binance perpetual futures.
The image above provides further explanation of functionality and color correspondence.
The image above shows the indicator calculating volume at each tick level and displaying the metric.
The label color outline (neon effect) is configurable; the image above is absent the feature.
The image above shows Open Interest (OI) Delta calculated - similar to how the script calculates volume delta - for a Binance Perpetual Future pair.
This feature only works for Binance Futures pairs; the script will not load when trying to calculate OI Delta on other assets.
Additionally, a heatmap is displayable should you configure the indicator to calculate it.
The image above shows a heatmap using volume delta calculations.
The image above shows a heatmap using OI delta calculations.
Of course, these calculations - when absent requisite data - require some assumptions to better replicate calculations with access to requisite data.
The indicator assumes a 60/40 split when a tick level is traded at and only one metric - "buy volume" or "sell volume" is recorded. This means there shouldn't be any levels recorded where "buy volume" is greater than 0 and "sell volume" equals 0 and vice versa. While this assumption was performed arbitrarily, it may help better replicate volume delta and OI delta calculations seen on other charting platforms.
This option is configurable; you can select to have the script not assume a 60/40 split and instead record volume "as is" at the corresponding tick level.
The script also divides volume and open interest if a one-minute bar violates multiple tick levels. The volume or open interest generated on the one-minute bar will be divided by the number of tick levels it exceeds. The results are, subsequently, appended to the violated tick levels.
Further, the script can be set to recalculate after a user-defined time threshold is exceeded. You can also define the percentage or tick distance between levels.
Also, it'd be great if this indicator can nicely replicate volume delta indicators on other charting platforms. If you've any ideas on how price action can be used to better assume volume at the corresponding price area please let me know!
Thank you (:
Volume Profile S/R + OB/OS + BreaksAs a support resistance trader I have created this indicator that shows SR lines. RSI over bought and over sold. I also added momentum candle.
It's easy to use. The arrows show over bought and over sold, that's where I start to be interested. Confirmation is if we are near a support/resistance area. shown as a red/green line.
Don't just trade the RSI, Be patient and only take the perfekt setups.
I't clean, it's simple it works.
Volume Profile Bar-Magnified Order Blocks [JacobMagleby]djfkudfudgfdsfhdcjdgcgbkdcjbfsdhgfhgignhdghklgdlgdkgnhdghnfjknvlskvmjldkvmjlkfgmjlfgvjljm
Trendlines & SR ZonesIt's a comprehensive indicator (Pine Script v6) that represents two powerful technical analysis tools: automatic trendline detection based on pivot points and volume delta analysis with support/resistance zone identification. This overlay indicator helps traders identify potential trend directions and key price levels where significant buying or selling pressure has occurred.
Features: =
1. Price Trendlines
The indicator automatically identifies and draws trendlines based on pivot points, creating dynamic support and resistance levels.
Key Components:
Pivot Detection: Uses configurable left and right bars to identify significant pivot highs and lows
Trendline Filtering: Only draws downward-sloping resistance trendlines and upward-sloping support trendlines
Zone Creation: Creates filled zones around trendlines based on average price volatility
Automatic Management: Maintains only the 3 most recent significant trendlines to avoid chart clutter
Customization Options:
Left/Right Bars for Pivot: Adjust sensitivity of pivot detection (default: 10 bars each side)
Extension Length: Control how far trendlines extend past the second pivot (default: 50 bars)
Average Body Periods: Set the lookback period for volatility calculation (default: 100)
Tolerance Multiplier: Adjust the width of the trendline zones (default: 1.0)
Color Customization: Separate colors for high (resistance) and low (support) trendlines and their fills
2. Volume Delta % Bars
The indicator analyzes volume distribution across price levels to identify significant supply and demand zones.
Key Components:
Volume Profile Analysis: Divides the price range into rows and calculates volume delta at each level
Delta Visualization: Displays horizontal bars showing the percentage difference between buying and selling volume
Zone Identification: Automatically identifies the most significant supply and demand zones
Visual Integration: Connects volume delta bars with corresponding support/resistance zones on the price chart
Customization Options:
Lookback Period: Set the number of bars to analyze for volume (default: 200)
Price Rows: Control the granularity of the volume analysis (default: 50 rows)
Delta Sections: Adjust the number of horizontal delta bars displayed (default: 20)
Panel Appearance: Customize width, position, and direction of the delta panel
Zone Settings: Control the number of supply/demand zones and their extension (default: 3 zones)
How It Works-
Trendline Logic:
The script continuously scans for pivot highs and lows based on the specified left and right bars
When a pivot is detected, it creates a horizontal line at that price level
The script then looks for the previous pivot of the same type (high or low)
It connects these pivots with a trendline, extending it based on the user-specified setting
A parallel line is created to form a zone, with the distance based on average price volatility
The script filters out invalid trendlines (upward-sloping resistance and downward-sloping support). Only the 3 most recent trendlines are maintained to prevent chart clutter
Volume Delta Logic:
The script divides the price range over the lookback period into the specified number of rows
For each bar in the lookback period, it categorizes volume as bullish (close > open) or bearish (close < open). This volume is assigned to the appropriate price level based on the HLC3 price.
The price levels are grouped into sections, and the net delta (bullish - bearish volume) is calculated for each Horizontal bars are drawn to represent these delta percentages.
The most significant positive and negative deltas are identified and displayed as support and resistance zones. These zones are extended to the left on the price chart and connected to the delta panel with dotted lines.
Ideal Timeframes:
The indicator is versatile and can be used across multiple timeframes, but it performs optimally on specific timeframes depending on your trading style:
For Day Trading:
Optimal Timeframes: 15-minute to 1-hour charts
Why: These timeframes provide a good balance between noise reduction and sufficient volume data. The volume delta analysis is particularly effective on these timeframes as it captures intraday accumulation/distribution patterns while the trendlines remain reliable enough for intraday trading decisions.
For Swing Trading:
Optimal Timeframes: 1-hour to 4-hour charts
Why: These timeframes offer the best combination of reliable trendline formation and meaningful volume analysis. The trendlines on these timeframes are less prone to whipsaws, while the volume delta analysis captures multi-day trading sessions and institutional activity.
For Position Trading:
Optimal Timeframes: Daily and weekly charts
Why: On these higher timeframes, trendlines become extremely reliable as they represent significant market structure points. The volume delta analysis reveals longer-term accumulation and distribution patterns that can define major support and resistance zones for weeks or months.
Timeframe-Specific Adjustments:
Lower Timeframes (1-15 minutes):
Reduce left/right bars for pivots (5-8 bars)
Decrease lookback period for volume delta (50-100 bars)
Increase tolerance multiplier (1.2-1.5) to account for higher volatility
Higher Timeframes (Daily+):
Increase left/right bars for pivots (15-20 bars)
Extend lookback period for volume delta (300-500 bars)
Consider increasing the number of price rows (70-100) for more detailed volume analysis
Usage Guidelines-
For Trendline Analysis:
Use the trendlines as dynamic support and resistance levels
Price reactions at these levels can indicate potential trend continuation or reversal points
The filled zones around trendlines represent areas of price volatility or uncertainty
Consider the slope of the trendline as an indication of trend strength
For Volume Delta Analysis:
The horizontal delta bars show where buying or selling pressure has been concentrated
Green bars indicate areas where buying volume exceeded selling volume (demand)
Red bars indicate areas where selling volume exceeded buying volume (supply)
The highlighted supply and demand zones on the price chart represent significant price levels
These zones can act as future support or resistance areas as price revisits them
Customization Tips:
Trendline Sensitivity: Decrease left/right bars values to detect more pivots (more sensitive) or increase them for fewer, more significant pivots
Zone Width: Adjust the tolerance multiplier to make trendline zones wider or narrower based on your trading style
Volume Analysis: Increase the lookback period for a longer-term volume profile or decrease it for more recent activity
Visual Clarity: Adjust colors and transparency settings to match your chart theme and preferences
Conclusion:
This indicator provides traders with a comprehensive view of both trend dynamics and volume-based support/resistance levels. With these two analytical approaches, the indicator offers valuable insights for identifying potential entry and exit points, trend strength, and key price levels where significant market activity has occurred. The extensive customization options allow traders to adapt the indicator to various trading styles and timeframes, with optimal performance on 15-minute to daily charts depending on their trading horizon.
Chart Attached: NSE HINDZINC, EoD 12/12/25
DISCLAIMER: This information is provided for educational purposes only and should not be considered financial, investment, or trading advice. Please do boost if you like it. Happy Trading.
SNIPER ORB V3# 🎯 SNIPER ORB TRADING CHEAT SHEET
## Quick Reference Guide for Live Trading
---
## 📊 VISUAL IDENTIFICATION GUIDE
```
═══════════════════════════════════════════════════════════════════
YOUR CHART AT A GLANCE
═══════════════════════════════════════════════════════════════════
🔵 BRIGHT BLUE LINES (3px) → 5min ORB High/Low
🔷 CYAN LINES (2px) → 15min ORB High/Low
🟣 PURPLE LINES (2px) → 30min ORB High/Low (PRIMARY)
🟢 GREEN DASHED LINES (1px) → Upside targets (1x, 2x, 3x from 30min ORB)
🔴 RED DASHED LINES (1px) → Downside targets (1x, 2x, 3x from 30min ORB)
🟡 GOLD LINE (2px) → Anchored VWAP (9:30 AM anchor for NY, 3:00 AM for London)
📋 INFO TABLE (top-right) → Shows live ORB ranges, VWAP price, status
═══════════════════════════════════════════════════════════════════
```
**KEY DIFFERENCE FROM OTHER ORB INDICATORS:**
- You see **ALL 3 ORB PERIODS SIMULTANEOUSLY** (5min, 15min, 30min)
- Targets calculated from **30min ORB ONLY** (not 5min or 15min)
- **NO BOX FILLS** - clean line-only display for sniper precision
- Auto-disappears at session end (no clutter from old sessions)
---
## 🔘 NEW FEATURE: ORB DISPLAY TOGGLES
**You now have FULL CONTROL over which ORB periods to display!**
```
In indicator settings → "ORB Display" section:
☑ Show 5min ORB → Toggle blue lines ON/OFF
☑ Show 15min ORB → Toggle cyan lines ON/OFF
☑ Show 30min ORB → Toggle purple lines ON/OFF
USE CASES:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. FOCUS MODE (30min only)
☐ 5min ☐ 15min ☑ 30min
→ Clean chart, just your primary trading range
→ Best for beginners or minimalist traders
2. EARLY WARNING MODE (5min + 30min)
☑ 5min ☐ 15min ☑ 30min
→ See early breaks with 5min, trade 30min confirmation
→ Reduces visual noise from 15min
3. CONFLUENCE MODE (all 3 ORBs)
☑ 5min ☑ 15min ☑ 30min
→ Maximum information, all alignment signals
→ For advanced traders seeking highest probability
4. INTRADAY SCALP MODE (5min only)
☑ 5min ☐ 15min ☐ 30min
→ Ultra-fast entries on 5min breaks
→ High-risk, high-frequency approach
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💡 PRO TIP: Start with 30min only, then add 5min/15min as you gain experience
```
---
## 🎯 FIXED: ANCHORED VWAP (TIMESTAMP-BASED)
**The VWAP now anchors with SURGICAL PRECISION to the exact session start candle!**
```
LONDON SESSION:
• Anchors at the EXACT 3:00 AM ET candle
• Uses timestamp checking: hour == 3 AND minute == 0
• Resets every morning at London Open
NEW YORK SESSION:
• Anchors at the EXACT 9:30 AM ET candle
• Uses timestamp checking: hour == 9 AND minute == 30
• Resets every day at NY Open
WHAT THIS MEANS:
✅ VWAP starts accumulating from the first tick of the session
✅ No more "off by one bar" errors
✅ Institutional-grade VWAP anchoring
✅ Perfect alignment with your ORB start times
HOW TO VERIFY IT'S WORKING:
1. Load indicator on 1min or 5min chart
2. Find the exact 9:30 AM candle (NY) or 3:00 AM candle (London)
3. VWAP should START appearing from that exact bar
4. Not the bar before, not the bar after - THAT EXACT BAR
```
---
## ⏰ SESSION TIMING MATRIX
| Session | Start Time | 5min Complete | 15min Complete | 30min Complete | Session End |
|---------|-----------|---------------|----------------|----------------|-------------|
| **London** | 3:00 AM ET | 3:05 AM | 3:15 AM | 3:30 AM | 9:30 AM ET (disappears) |
| **New York** | 9:30 AM ET | 9:35 AM | 9:45 AM | 10:00 AM | 5:00 PM ET (disappears) |
**💡 GOLDEN RULES:**
1. **WAIT FOR 30MIN ORB TO COMPLETE** before trading targets (10:00 AM NY / 3:30 AM London)
2. Use 5min and 15min ORBs as **early warning signals** only
3. All ORB lines + VWAP **auto-delete** at session end (clean chart)
---
## 🎯 THE 3-ORB SYSTEM: HOW IT WORKS
### **Hierarchical ORB Structure**
```
TIME: 9:30 AM ─────────────────────────────────> 10:00 AM ──────> 5:00 PM
↓ ↓
SESSION START 30min ORB COMPLETE
(all 3 ORBs begin forming) (targets appear)
📍 5min ORB (9:30-9:35 AM): ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━>
Purpose: EARLY breakout signal, fastest-moving boundary
📍 15min ORB (9:30-9:45 AM): ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━>
Purpose: MID-TERM institutional reference level
📍 30min ORB (9:30-10:00 AM): ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━>
Purpose: PRIMARY TRADING RANGE - all targets calculated from this
🎯 TARGETS (10:00 AM onward): ▪ ▪ ▪ ▪ ▪ (1x, 2x, 3x from 30min ORB)
Purpose: Profit-taking levels based on 30min range
```
**Why 3 ORBs Instead of 1?**
- **5min ORB**: Captures early institutional positioning (first 5 minutes)
- **15min ORB**: Confirms directional bias (more stable than 5min)
- **30min ORB**: Full market digestion of overnight news + opening orders
- **Confluence = Higher Win Rate**: When all 3 align, breakouts are extremely reliable
---
## 🎯 THE 5 HIGH-PROBABILITY SETUPS
### **SETUP #1: TRIPLE ORB BREAKOUT CONFLUENCE** ⭐⭐⭐⭐⭐
```
CONDITIONS:
✅ 30min ORB complete (10:00 AM NY / 3:30 AM London)
✅ Price breaks ALL 3 ORBs simultaneously:
• 5min high/low (blue line)
• 15min high/low (cyan line)
• 30min high/low (purple line)
✅ VWAP confirms direction (below price = bullish, above = bearish)
✅ Volume spike on breakout candle
ENTRY: Close of breakout candle (must close beyond ALL 3 ORBs)
STOP: Inside 30min ORB at 30m low (long) or 30m high (short)
TARGET 1: First green/red dashed line (0.5x 30m range)
TARGET 2: Second target (1x 30m range)
TARGET 3: Third target (1.5x 30m range)
WIN RATE: 75-85% | R:R = 1:2.5 minimum
NOTES: When all 3 ORBs align, institutional order flow is unanimous
```
---
### **SETUP #2: 5MIN EARLY BREAKOUT → 30MIN CONFIRMATION** ⭐⭐⭐⭐
```
CONDITIONS:
✅ Price breaks 5min ORB first (blue line crossed)
✅ 15min ORB holds initially (cyan line not crossed yet)
✅ After 30min ORB completes, price breaks 30min boundary (purple)
✅ VWAP alignment confirms direction
✅ All 3 ORBs now broken in same direction
ENTRY: When 30min ORB breaks (purple line) + 5min/15min already broken
STOP: 30min ORB opposite boundary
TARGET 1-3: Standard targets from 30min ORB
WIN RATE: 70-80% | R:R = 1:2+
NOTES: 5min gave early warning, 30min confirms institutional commitment
```
---
### **SETUP #3: FALSE 5MIN BREAKOUT → 30MIN REVERSAL** ⭐⭐⭐⭐⭐
```
CONDITIONS:
✅ Price breaks 5min ORB (blue line)
✅ Fails to break 15min or 30min ORBs (cyan/purple lines hold)
✅ Price reverses back inside 5min ORB
✅ Then breaks OPPOSITE side of 30min ORB (purple line)
✅ VWAP flips to confirm new direction
ENTRY: When 30min ORB breaks in OPPOSITE direction of failed 5min break
STOP: Failed 5min breakout high/low (now a liquidity grab zone)
TARGET 1-3: Standard targets
WIN RATE: 80-90% | R:R = 1:3+ (trapped traders forced to exit)
NOTES: Most profitable setup - 5min breakout was liquidity hunt
```
---
### **SETUP #4: TIGHT COMPRESSION → EXPLOSION** ⭐⭐⭐⭐
```
CONDITIONS:
✅ All 3 ORBs tightly overlapping (5m, 15m, 30m within 50 points on YM)
✅ Range < 0.3% of price (very tight consolidation)
✅ VWAP sitting in middle of compression
✅ 30min ORB complete, price still inside all 3
ENTRY: Simultaneous break of ALL 3 ORBs + VWAP cross
STOP: Middle of compression zone
TARGET: 2x-4x normal targets (volatility expansion)
WIN RATE: 65-75% | R:R = 1:5+ (explosive breakout)
NOTES: Low volatility → high volatility shift, institutions coiling spring
```
---
### **SETUP #5: VWAP BOUNCE WITHIN 30MIN ORB** ⭐⭐⭐⭐
```
CONDITIONS:
✅ Price stayed inside 30min ORB for 1+ hours post-formation
✅ VWAP acting as dynamic support (long) or resistance (short)
✅ Price bouncing between VWAP and 30min ORB boundaries
✅ Clear rejection candles at VWAP
ENTRY: When price bounces off VWAP toward 30min ORB boundary
• Long: VWAP bounce up toward 30m high (purple)
• Short: VWAP rejection down toward 30m low (purple)
STOP: Beyond VWAP by 20 points
TARGET: 30min ORB opposite boundary
WIN RATE: 70-80% | R:R = 1:1.5-2
NOTES: Range-bound play, NOT for breakout traders
```
---
## 🛡️ RISK MANAGEMENT RULES
### **Position Sizing by ORB Range**
```
30min ORB Range | Stop Distance | Risk $500 (1%) | YM Contracts
-----------------|------------------|-----------------|-------------
< 50 points | 50 pts | $500 ÷ $250 = | 2 contracts
50-100 points | 100 pts | $500 ÷ $500 = | 1 contract
100-150 points | 150 pts | $500 ÷ $750 = | 0.66 (use 1)
150-200 points | 200 pts | $500 ÷ $1000 = | 0.5 (use 1)
> 200 points | Don't trade | Too wide | Skip setup
Formula: Risk $ ÷ (Stop Distance × $5 per YM point) = Max Contracts
```
### **The 3-Strike Rule (MANDATORY)**
```
✅ Trade 1: Full position size (based on 30m ORB range)
❌ Stop hit → Trade 2: HALF position size
❌ Stop hit → Trade 3: QUARTER position size
❌ Stop hit → DONE FOR THE DAY (no exceptions)
```
### **Profit Taking Ladder**
```
TARGET 1 (0.5x 30m range): Take 50% off, move stop to breakeven
TARGET 2 (1.0x 30m range): Take 30% off, trail stop by 25 points
TARGET 3 (1.5x 30m range): Take 15% off, let 5% run with 50pt trail
```
---
## ⚠️ DO NOT TRADE IF...
```
🚫 30min ORB incomplete (< 10:00 AM NY / < 3:30 AM London)
🚫 30min ORB range < 40 points YM (too tight, likely chop)
🚫 30min ORB range > 250 points YM (too wide, unpredictable)
🚫 All 3 ORBs wildly divergent (5m=100pts, 15m=180pts, 30m=240pts)
🚫 Major news release within 30 minutes (wait for ORB to reform)
🚫 You've hit 3 losses in the session (3-strike rule)
🚫 You're tired, emotional, revenge trading, or distracted
🚫 Time > 12:00 PM ET (lunch, avoid until 1:00 PM)
🚫 Time > 3:00 PM ET unless Power Hour (3:00-4:00 PM) momentum
```
---
## 🔍 PRE-SESSION CHECKLIST
**15 Minutes Before London (2:45 AM ET) or NY (9:15 AM ET):**
```
□ Check economic calendar (FOMC? NFP? CPI? → extra caution)
□ Review previous session's ORB ranges (context for today's volatility)
□ Load SNIPER ORB on 1min or 5min chart
□ Select correct session: "London" or "New York"
□ Verify indicator settings:
• Number of Targets: 3
• Target % of 30min Range: 50%
• Show Anchored VWAP: ON
□ Set TradingView alerts:
• 30min ORB complete (10:00 AM or 3:30 AM)
• Price crossing 30min high/low
• VWAP crosses
□ Prepare bracket orders mentally (entry, stop, 3 targets)
□ Review yesterday's P&L and lessons learned
□ Set phone to "Do Not Disturb" mode
```
---
## 🎨 INDICATOR SETTINGS GUIDE
### **Core Settings (Updated with Toggles)**
```
SESSION SETTINGS:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• Active Session: "London" or "New York"
ORB DISPLAY (NEW!):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☑ Show 5min ORB (toggle blue lines)
☑ Show 15min ORB (toggle cyan lines)
☑ Show 30min ORB (toggle purple lines)
💡 Turn OFF any ORB to declutter your chart!
TARGET SETTINGS:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• Number of Targets: 3 (default)
• Target % of 30min Range: 50% (default)
VWAP SETTINGS:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☑ Show Anchored VWAP
• VWAP Color: Gold (#FFC107)
• VWAP Width: 2px
```
### **Color Customization (Optimized for Dark Charts)**
```
DEFAULT COLORS:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5min ORB: Bright Blue (#2196F3) - 3px wide
15min ORB: Cyan (#00BCD4) - 2px wide
30min ORB: Purple (#9C27B0) - 2px wide
Upside Targets: Green (#4CAF50) - 1px dashed
Downside Targets: Red (#F44336) - 1px dashed
VWAP: Gold (#FFC107) - 2px solid
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
WHY THESE COLORS?
• Blue family (5m/15m) = short-term, high-frequency
• Purple (30m) = primary, institutional level
• Green/Red = universal up/down
• Gold VWAP = fair value anchor (stands out)
```
### **Settings by Trading Style**
**BEGINNER (Clean & Simple):**
```
ORB Display:
☐ Show 5min ORB
☐ Show 15min ORB
☑ Show 30min ORB (30min only - focus mode)
Number of Targets: 2-3
Target % of 30min Range: 50%
Chart Timeframe: 5-minute
```
**SCALPER (5-15 min holds):**
```
ORB Display:
☑ Show 5min ORB (early signals)
☐ Show 15min ORB
☑ Show 30min ORB (confirmation)
Number of Targets: 5
Target % of 30min Range: 30-40%
Label Size: Tiny
Chart Timeframe: 1-minute
```
**DAY TRADER (30-90 min holds):**
```
ORB Display:
☑ Show 5min ORB
☑ Show 15min ORB
☑ Show 30min ORB (all 3 - confluence mode)
Number of Targets: 3
Target % of 30min Range: 50%
Label Size: Small
Chart Timeframe: 5-minute (RECOMMENDED)
```
**SWING TRADER (2-4 hour holds):**
```
ORB Display:
☐ Show 5min ORB (too noisy for swings)
☑ Show 15min ORB
☑ Show 30min ORB
Number of Targets: 2-3
Target % of 30min Range: 75-100%
Label Size: Normal
Chart Timeframe: 15-minute
```
---
## 📈 TIMEFRAME SELECTION GUIDE
| Your Timeframe | What You See | Best For |
|---------------|--------------|----------|
| **1-minute** | Every tick, high noise | Scalping, precision entries |
| **5-minute** | Balanced clarity | Day trading (RECOMMENDED) |
| **15-minute** | Clean structure | Swing positions |
| **30-minute** | Too compressed | Not recommended (can't see ORB form) |
**💡 PRO TIP:**
- **Primary chart: 5-minute** (for entries and monitoring)
- **Secondary chart: 1-minute** (for precise timing)
- **Never go above 15-minute** (ORBs won't form properly)
---
## 🧠 READING THE 3-ORB STRUCTURE
### **Bullish Alignment Patterns**
```
PATTERN 1: "Staircase Expansion"
5min: ━━━━ (tight, 60 pts)
15min: ━━━━━━ (wider, 90 pts)
30min: ━━━━━━━━ (widest, 120 pts)
→ Bullish expansion, expect upside breakout
PATTERN 2: "Nested Compression"
5min: ━━ (30 pts)
15min: ━━━ (35 pts)
30min: ━━━━ (40 pts)
→ All tight, explosive breakout likely
PATTERN 3: "Early Commitment"
5min: ━━━━━━ (100 pts, already broken up)
15min: ━━━━━ (80 pts, holding)
30min: ━━━━━ (110 pts, about to break)
→ 5min led the way, 30min confirmation coming
```
### **Bearish Alignment Patterns**
```
PATTERN 1: "Waterfall Setup"
5min: ━━━━ (50 pts, broke down)
15min: ━━━━━ (70 pts, broke down)
30min: ━━━━━━ (90 pts, about to break)
→ Sequential breakdown, strong bearish momentum
PATTERN 2: "Failed Highs"
5min: ━━━━━━ (upper wick rejections)
15min: ━━━━━━ (couldn't break)
30min: ━━━━━━━ (topped out)
→ All 3 rejecting highs, bearish reversal likely
```
### **Neutral/Chop Patterns (AVOID TRADING)**
```
PATTERN 1: "Wide Divergence"
5min: ━━ (30 pts)
15min: ━━━━━━━ (120 pts)
30min: ━━━━━━━━━━━ (200 pts)
→ No consensus, unpredictable, skip
PATTERN 2: "Whipsaw City"
• Price breaking 5min up, then down, then up again
• 15min and 30min not aligned
• VWAP getting crossed every 5 minutes
→ Chop day, step aside, wait for clarity
```
---
## 📊 INTEGRATION WITH YM ULTIMATE SNIPER v8.1
**The 2-System Confluence Method:**
```
┌─────────────────────────────────────────────────────────────┐
│ STEP 1: SNIPER ORB → Defines "Zones That Matter" │
│ • 30min ORB = primary institutional range │
│ • VWAP = fair value anchor │
│ • Targets = profit zones │
│ • 5min/15min = early warning signals │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ STEP 2: YM ULTIMATE SNIPER → Triggers precise entry │
│ • Wait for GOD MODE signal AT 30min ORB boundary │
│ • 6-gate filter: Score ≥9, fat body ≥70%, delta ≥70% │
│ • Candle Dominance Index (CDI) ≥7 │
│ • Intrabar pressure consistent throughout formation │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ STEP 3: EXECUTE TRADE │
│ • ORB breakout + GOD MODE = MAXIMUM PROBABILITY │
│ • Enter ONLY when BOTH systems align │
│ • This is TRUE "sniper" trading (2-5 trades/day max) │
└─────────────────────────────────────────────────────────────┘
```
**Confluence Scoring for Combined System:**
```
SNIPER ORB Criteria:
□ 30min ORB complete (10:00 AM+) +2 points
□ All 3 ORBs broken in same direction +2 points
□ VWAP alignment (below=bull, above=bear) +1 point
□ Volume spike on breakout candle +1 point
□ Tight 3-ORB compression (<100pt divergence) +1 point
YM ULTIMATE SNIPER Criteria:
□ GOD MODE signal at ORB boundary +3 points
□ Score ≥9.0 (tier classification) +1 point
□ Candle Dominance Index (CDI) ≥8 +1 point
TOTAL POSSIBLE: 12 points
TRADE EXECUTION RULES:
• 10-12 points = MAX SIZE (this is the holy grail setup)
• 8-9 points = FULL SIZE (high probability)
• 6-7 points = HALF SIZE (moderate probability)
• <6 points = NO TRADE (wait for better alignment)
```
---
## 💡 COMMON MISTAKES & FIXES
```
❌ MISTAKE: Trading before 30min ORB completes
✅ FIX: Wait until 10:00 AM (NY) or 3:30 AM (London), NO EXCEPTIONS
❌ MISTAKE: Ignoring 5min and 15min ORBs (only watching 30min)
✅ FIX: Use all 3 for confluence - they're your early warning system
❌ MISTAKE: Chasing breakouts 100+ points beyond 30min ORB
✅ FIX: Wait for pullback to VWAP or 30min boundary for re-entry
❌ MISTAKE: Not adjusting target % for market conditions
✅ FIX: Volatile day (ORB >200pts)? Use 75-100% targets
Calm day (ORB <80pts)? Use 30-40% targets
❌ MISTAKE: Trading when all 3 ORBs are wildly different sizes
✅ FIX: Skip the day if 5m/15m/30m diverge by >100pts - no consensus
❌ MISTAKE: Forgetting VWAP position
✅ FIX: VWAP MUST confirm bias:
• Long: price > VWAP
• Short: price < VWAP
• If VWAP contradicts, skip the trade
❌ MISTAKE: Not respecting the 3-strike rule
✅ FIX: 3 losses = DONE for the session, no rationalization
❌ MISTAKE: Trading during lunch (12:00-1:00 PM ET)
✅ FIX: Volume dies, ORBs lose relevance, false signals increase
```
---
## 🔔 ALERT SETUP (ESSENTIAL)
**TradingView Alerts You MUST Set:**
```
ALERT 1: "30min ORB Complete"
• Type: Time-based
• Trigger: 10:00 AM ET (NY) or 3:30 AM ET (London)
• Message: "🎯 30min ORB complete - targets now active"
ALERT 2: "30min ORB High Breakout"
• Type: Crossing Up
• Value 1: Close
• Value 2: 30min ORB High (purple line)
• Message: "🚀 30m ORB HIGH broken - check for long setup"
ALERT 3: "30min ORB Low Breakdown"
• Type: Crossing Down
• Value 1: Close
• Value 2: 30min ORB Low (purple line)
• Message: "📉 30m ORB LOW broken - check for short setup"
ALERT 4: "VWAP Cross"
• Type: Crossing
• Value 1: Close
• Value 2: VWAP
• Message: "⚡ VWAP crossed - check institutional bias shift"
ALERT 5: "Target 1 Hit"
• Type: Crossing
• Value 1: High (for longs) or Low (for shorts)
• Value 2: First target line
• Message: "🎯 Target 1 hit - take 50% off, move stop to BE"
```
---
## 📱 MOBILE TRADING WORKFLOW
**TradingView Mobile App Setup:**
```
1. SAVE LAYOUT
• Chart: 5-minute timeframe
• SNIPER ORB indicator loaded
• YM Ultimate SNIPER v8.1 loaded (if using)
• Save as "SNIPER ORB - YM"
2. ENABLE NOTIFICATIONS
• Settings → Notifications → Push Alerts: ON
• All 5 alerts above configured
3. QUICK ACCESS
• Add YM futures to Watchlist: "MYM" or "YM1!"
• Pin SNIPER ORB layout to favorites
4. EXECUTION READY
• Broker app (TastyTrade, NinjaTrader, etc.) logged in
• Preset bracket orders:
- Entry: market order
- Stop: 30m ORB opposite boundary
- Targets: 3 levels (50%, 30%, 20% of position)
5. BATTERY & CONNECTIVITY
• Phone charged 100% before session
• Stable WiFi or LTE connection
• Backup power bank available
```
---
## 🎓 DAILY PERFORMANCE JOURNAL
**After Each Trading Session (MANDATORY):**
```
═══════════════════════════════════════════════════════════════
DATE: __________ SESSION: □ London □ New York
═══════════════════════════════════════════════════════════════
ORB DATA:
• 5min ORB Range: ______ points
• 15min ORB Range: ______ points
• 30min ORB Range: ______ points
• Alignment: □ Tight □ Moderate □ Wide (skip if wide)
VWAP BEHAVIOR:
• Opening position: □ Above price □ Below price □ Mixed
• Did VWAP act as support/resistance? □ Yes □ No
TRADES TAKEN:
Total Setups Identified: _____
Trades Executed: _____
Win/Loss Record: _____ W / _____ L
Win Rate: _____%
Gross P&L: $_______
Net P&L (after commissions): $_______
BEST TRADE:
• Setup: ____________________ (which of the 5 setups?)
• Entry Price: ______ Exit Price: ______
• Profit: $_______
• What went RIGHT: _________________________________
_________________________________________________
WORST TRADE:
• Setup: ____________________
• Entry Price: ______ Exit Price: ______
• Loss: $_______
• What went WRONG: _________________________________
_________________________________________________
• Lesson Learned: ___________________________________
3-STRIKE RULE STATUS:
□ No losses (great day)
□ 1 loss (still in game)
□ 2 losses (caution, half size)
□ 3 losses (stopped for day, as required)
TOMORROW'S ADJUSTMENTS:
□ _________________________________________________
□ _________________________________________________
□ _________________________________________________
EMOTIONAL STATE TODAY:
□ Calm & focused (optimal)
□ Anxious/rushed (need to work on patience)
□ Overconfident (dial back position size)
□ Fearful (review winning trades to build confidence)
═══════════════════════════════════════════════════════════════
```
---
## 🚀 YOUR FIRST LIVE TRADE WALKTHROUGH
**Step-by-Step for New York Session (Most Common):**
```
⏰ 9:15 AM ET - PREPARATION
□ Load SNIPER ORB on YM 5-minute chart
□ Select "New York" session in indicator settings
□ Verify VWAP is showing (gold line)
□ Check economic calendar (any big news at 9:30?)
□ Prepare mentally: "I will wait for 30min ORB to complete"
⏰ 9:30 AM ET - SESSION OPENS
□ Watch 3 ORBs begin forming:
• Blue lines (5min) will lock in at 9:35 AM
• Cyan lines (15min) will lock in at 9:45 AM
• Purple lines (30min) will lock in at 10:00 AM
□ Observe VWAP anchoring at 9:30 AM candle
□ DO NOT TRADE YET - just observe
⏰ 9:35 AM - 5MIN ORB COMPLETE
□ Note 5min high/low (blue lines locked)
□ Check info table: "5m Range = XX points"
□ If 5min ORB breaks early, note direction but DON'T ENTER
⏰ 9:45 AM - 15MIN ORB COMPLETE
□ Note 15min high/low (cyan lines locked)
□ Compare to 5min ORB: Aligned? Expanding?
□ Still waiting... patience pays
⏰ 10:00 AM - 30MIN ORB COMPLETE (TARGETS APPEAR!)
□ Purple lines locked (30m high/low)
□ Green/red dashed target lines appear automatically
□ Info table shows "Status: ✓ Complete"
□ NOW you can trade breakouts
⏰ 10:00 AM - 11:30 AM - TRADING WINDOW
□ Wait for price to break purple line (30m ORB high or low)
□ Confirm:
1. All 3 ORBs broken in same direction?
2. VWAP confirming (below=bullish, above=bearish)?
3. Volume spike visible?
4. YM SNIPER GOD MODE signal? (if using)
□ If all YES → ENTER TRADE:
• Market order at breakout close
• Stop at 30m ORB opposite boundary
• Targets at green/red dashed lines
⏰ TARGET MANAGEMENT
□ Price hits first target (1x) → Take 50% off, move stop to BE
□ Price hits second target (2x) → Take 30% off, trail stop
□ Price hits third target (3x) → Take 15% off, let 5% run
⏰ 12:00 PM - LUNCH (AVOID TRADING)
□ Volume dies down
□ ORBs become less relevant
□ Take a break, review morning trades
⏰ 1:00 PM - 3:00 PM - AFTERNOON SESSION
□ ORBs still valid but less reliable
□ Consider waiting for Power Hour (3:00-4:00 PM)
⏰ 5:00 PM - SESSION END
□ All ORB lines disappear automatically
□ VWAP disappears automatically
□ Chart cleans itself - ready for tomorrow
□ Fill out daily journal
```
---
## 🏆 WINNING MINDSET AFFIRMATIONS
Read these BEFORE each trading session:
```
"I trade ORBs, not chaos. Structure gives me edge."
"3 high-quality trades beat 20 mediocre ones."
"The 30min ORB is my anchor. I wait for it. Every. Single. Time."
"When all 3 ORBs align, institutions are unified. I follow."
"VWAP is my institutional compass. I respect its guidance."
"3 strikes and I'm out. Discipline > Ego."
"I am a SNIPER, not a machine gunner. Precision wins."
"My edge is patience. Let the ORBs complete."
"I don't predict. I react to proven structure."
"One perfect setup is worth waiting all morning."
```
---
## 📞 TROUBLESHOOTING
**"ORB lines not showing on chart!"**
→ Check timeframe: Must be 1min-30min (not daily/weekly)
→ Verify session time: Must be during London (3AM-9:30AM) or NY (9:30AM-5PM)
→ Check indicator status: Should say "⏳ Forming" or "✓ Complete" in table
**"Targets not appearing!"**
→ 30min ORB must be complete (10:00 AM NY / 3:30 AM London)
→ Check "Number of Targets" setting (must be ≥1)
→ Verify "Target % of 30min Range" is set (default 50%)
**"VWAP disappeared!"**
→ Normal behavior: VWAP auto-deletes at session end (5PM NY / 9:30AM London)
→ Toggle "Show Anchored VWAP" OFF then ON to reset
→ Check if you're viewing chart outside session hours
**"All 3 ORBs look the same!"**
→ This is actually GOOD - means tight alignment (high-probability setup)
→ If they're diverging wildly (>100pts difference), that's a skip signal
**"Info table blocking my view!"**
→ Info table is in top-right corner by default
→ Drag it to a different position (TradingView allows moving)
→ Or minimize it by clicking the small arrow
**"Colors are hard to see on my chart!"**
→ Go to indicator settings:
• "5min ORB", "15min ORB", "30min ORB" color pickers
• "Upside Targets", "Downside Targets" color pickers
• Recommended: Use contrasting colors vs your chart background
---
## 📚 ADVANCED INTEGRATION TECHNIQUES
### **Combining with Market Profile**
```
• Use Volume Profile to identify Value Area High (VAH) and Low (VAL)
• If 30min ORB aligns with VAH/VAL → extra confluence
• POC (Point of Control) acts similar to VWAP
```
### **Combining with Cumulative Delta**
```
• Check if delta is positive on 30min ORB high break (bullish confirmation)
• Negative delta on low break confirms bearish institutional flow
• Your YM SNIPER already tracks this - use together!
```
### **Combining with Options Flow**
```
• Large call buying near 30min ORB high? Institutions positioning for breakout
• Large put buying near 30min ORB low? Smart money hedging/shorting
• Tools: Unusual Whales, Cheddar Flow, OptionStrat
```
---
## 🎯 FINAL PRE-LIVE CHECKLIST
**DO NOT GO LIVE UNTIL ALL CHECKED:**
```
□ Practiced on TradingView Replay for 2+ weeks
□ Can identify all 5 setups by pattern recognition
□ Understand why targets come from 30min ORB only
□ Know difference between 5min/15min/30min roles
□ Risk management rules memorized (position sizing, 3-strike)
□ YM Ultimate SNIPER v8.1 loaded (optional but recommended)
□ All 5 TradingView alerts configured
□ Broker platform tested with demo account
□ Stop/target orders can be placed in <10 seconds
□ Daily journal template prepared
□ Emotional state: calm, patient, focused
□ Account size: Minimum $10,000 recommended
□ Understand auto-disappear behavior (ORBs delete at session end)
□ Know NOT to trade before 30min ORB complete
□ Comfortable with looking at chart and seeing 6+ lines (3 ORBs + targets)
IF ALL CHECKED → YOU'RE READY TO SNIPE! 🎯
IF ANY UNCHECKED → KEEP PRACTICING, DON'T RUSH
```
---
## 💎 THE CORE PRINCIPLE
```
╔═══════════════════════════════════════════════════════════╗
║ ║
║ "The ORB doesn't predict the market. ║
║ The ORB reveals where institutions are positioned. ║
║ ║
║ When you see all 3 ORBs align and break, ║
║ you're not guessing direction— ║
║ you're following the billion-dollar order flow." ║
║ ║
║ THAT'S YOUR EDGE. ║
║ ║
╚═══════════════════════════════════════════════════════════╝
```
**🎯 Good luck, stay patient, and happy sniping! 🎯**
═══════════════════════════════════════════════════════════════════
END OF SNIPER ORB TRADING CHEAT SHEET v3.0
═══════════════════════════════════════════════════════════════════
Liquidity Sentiment Profile [LuxAlgo]The Liquidity Sentiment Profile is an advanced charting tool that measures by combining PRICE and VOLUME data over specified anchored periods and highlights within a sequence of profiles the distribution of the liquidity and the market sentiment at specific price levels.
The Liquidity Sentiment Profile allows traders to reveal significant price levels, dominant market sentiment, support and resistance levels, supply and demand zones, liquidity availability levels, liquidity gaps, consolidation zones, and more based on price and volume data.
Liquidity refers to the availability of orders at specific price levels in the market, allowing transactions to occur smoothly.
🔶 USAGE
A Liquidity Sentiment Profile is a combination of a liquidity and a sentiment profile, where the right part of the profile displays the distribution of the traded activity at different price levels and the left part displays the market sentiment at those price levels.
The Liquidity Sentiment Profiles are visualized with different colors, where each color has a different meaning.
The Liquidity Sentiment Profiles aim to present Value Areas based on the significance of price levels, thus allowing users to identify value areas that can be formed more than once within the range of a single profile.
Level of Significance Line - displays the changes in the price levels with the highest traded activity (developing POC)
🔶 SETTINGS
The script takes into account user-defined parameters and plots the profiles, where detailed usage for each user-defined input parameter in indicator settings is provided with the related input's tooltip.
🔹 Liquidity Sentiment Profiles
Anchor Period: The indicator resolution is set by the input of the Anchor Period, the default option is AUTO.
🔹 Liquidity Profile Settings
Liquidity Profile: Toggles the visibility of the Liquidity Profiles
High Traded Nodes: Threshold and Color option for High Traded Nodes
Average Traded Nodes: Color option for Average Traded Nodes
Low Traded Nodes: Threshold and Color option for Low Traded Nodes
🔹 Sentiment Profile Settings
Sentiment Profile: Toggles the visibility of the Sentiment Profiles
Bullish Nodes: Color option for Bullish Nodes
Bearish Nodes: Color option for Bearish Nodes
🔹 Other Settings
Level of Significance: Toggles the visibility of the Level of Significance Line
Profile Price Levels: Toggles the visibility of the Profile Price Levels
Number of Rows: Specify how many rows each profile histogram will have. Caution, having it set to high values will quickly hit Pine Script™ drawing objects limit and fewer historical profiles will be displayed
Profile Width %: Alters the width of the rows in the histogram, relative to the profile length
Profile Range Background Fill: Toggles the visibility of the Profiles Range
🔶 LIMITATIONS
The amount of drawing objects that can be used is limited, as such using a high number of rows can display fewer historical profiles and occasionally incomplete profiles.
🔶 RELATED SCRIPTS
🔹 Buyside-Sellside-Liquidity
🔹 ICT-Concepts
🔹 Swing-Volume-Profiles
Volume/Market ProfileVolume/Market Profile is a 2 in 1 Volume Profile and Market Profile Indicator.
This indicator is my own calculations for compiling a volume profile and market profile.
The profile is progressively calculated live as the chart develops.
I have made use of both Boxes AND Lines to allow me to display a finer granularity profile by displaying up to twice the max amount of lines allowed in tradingview.
I have spent a lot of time to make sure the values are getting appended exactly as intended so that I can assure this profile is operating as precisely as possible within the limitations of the data available.
To make my calculations easier to use in other places, I have made my volume profile a function that can be extracted and used whenever you need values from a volume profile.
Feel free to read through the script if you don't understand how this profile is developed. I have made a commentary of my volume profile function to help you understand what exactly happens to compile the profiles.
As mentioned before, This indicator doubles as a market profile. To view both at the same time you will need to add the indicator on your chart twice.
I have built in comprehensive customizations to allow you to display your profiles however fits your needs.
Timeframe: The aggregation period for profiles, to see a 1 week profile, change the timeframe to 1 week.
Note: You can add custom timeframes by adding a custom timeframe in your chart timeframe dropdown menu. When you add timeframes in this area, they appear as options within indicators with the timeframe input.
Sensitivity: Allows for greater or less granularity changes. The calculation method for granularity automatically changes depending on the range of your chart.
Note: Multiply this value by 100 and that will be the max range (in ticks) of your price before the indicator automatically adjusts to make the profile less granular. (ex. If price ranges $1, and 1 tick is $0.01, granularity will be 0.01 with a sensitivity of 1+)
Value Area %: % of total volume to display as the value zone. (_% of total profile values are contained within the value zone)
Calculate as Market Profile: Uses a 1 Instead of the candle volume, to display a Market Profile. (If selected POC -> TPOC)
Display Size: Sets the # of bars from the profile axis to the profile's max value. If set negative, profile will be displayed left of axis, if positive, profile will be displayed to the right of the axis.
Display Offset: Sets the # of bars in front(or behind) the current chart bar to set the axis of the profile. If negative, the axis will be to the left of the current chart bar, if positive the axis will be right of the current chart bar.
Display Historical POC/VAH/VAL: Choose to display historical poc,vah,val lines.
Colors: I'm not explaining colors.
Enjoy!
LibVPrfLibrary "LibVPrf"
This library provides an object-oriented framework for volume
profile analysis in Pine Script®. It is built around the `VProf`
User-Defined Type (UDT), which encapsulates all data, settings,
and statistical metrics for a single profile, enabling stateful
analysis with on-demand calculations.
Key Features:
1. **Object-Oriented Design (UDT):** The library is built around
the `VProf` UDT. This object encapsulates all profile data
and provides methods for its full lifecycle management,
including creation, cloning, clearing, and merging of profiles.
2. **Volume Allocation (`AllotMode`):** Offers two methods for
allocating a bar's volume:
- **Classic:** Assigns the entire bar's volume to the close
price bucket.
- **PDF:** Distributes volume across the bar's range using a
statistical price distribution model from the `LibBrSt` library.
3. **Buy/Sell Volume Splitting (`SplitMode`):** Provides methods
for classifying volume into buying and selling pressure:
- **Classic:** Classifies volume based on the bar's color (Close vs. Open).
- **Dynamic:** A specific model that analyzes candle structure
(body vs. wicks) and a short-term trend factor to
estimate the buy/sell share at each price level.
4. **Statistical Analysis (On-Demand):** Offers a suite of
statistical metrics calculated using a "Lazy Evaluation"
pattern (computed only when requested via `get...` methods):
- **Central Tendency:** Point of Control (POC), VWAP, and Median.
- **Dispersion:** Value Area (VA) and Population Standard Deviation.
- **Shape:** Skewness and Excess Kurtosis.
- **Delta:** Cumulative Volume Delta, including its
historical high/low watermarks.
5. **Structural Analysis:** Includes a parameter-free method
(`getSegments`) to decompose a profile into its fundamental
unimodal segments, allowing for modality detection (e.g.,
identifying bimodal profiles).
6. **Dynamic Profile Management:**
- **Auto-Fitting:** Profiles set to `dynamic = true` will
automatically expand their price range to fit new data.
- **Manipulation:** The resolution, price range, and Value Area
of a dynamic profile can be changed at any time. This
triggers a resampling process that uses a **linear
interpolation model** to re-bucket existing volume.
- **Assumption:** Non-dynamic profiles are fixed and will throw
a `runtime.error` if `addBar` is called with data
outside their initial range.
7. **Bucket-Level Access:** Provides getter methods for direct
iteration and analysis of the raw buy/sell volume and price
boundaries of each individual price bucket.
---
**DISCLAIMER**
This library is provided "AS IS" and for informational and
educational purposes only. It does not constitute financial,
investment, or trading advice.
The author assumes no liability for any errors, inaccuracies,
or omissions in the code. Using this library to build
trading indicators or strategies is entirely at your own risk.
As a developer using this library, you are solely responsible
for the rigorous testing, validation, and performance of any
scripts you create based on these functions. The author shall
not be held liable for any financial losses incurred directly
or indirectly from the use of this library or any scripts
derived from it.
create(buckets, rangeUp, rangeLo, dynamic, valueArea, allot, estimator, cdfSteps, split, trendLen)
Construct a new `VProf` object with fixed bucket count & range.
Parameters:
buckets (int) : series int number of price buckets ≥ 1
rangeUp (float) : series float upper price bound (absolute)
rangeLo (float) : series float lower price bound (absolute)
dynamic (bool) : series bool Flag for dynamic adaption of profile ranges
valueArea (int) : series int Percentage of total volume to include in the Value Area (1..100)
allot (series AllotMode) : series AllotMode Allocation mode `classic` or `pdf` (default `classic`)
estimator (series PriceEst enum from AustrianTradingMachine/LibBrSt/1) : series LibBrSt.PriceEst PDF model when `model == PDF`. (deflault = 'uniform')
cdfSteps (int) : series int even #sub-intervals for Simpson rule (default 20)
split (series SplitMode) : series SplitMode Buy/Sell determination (default `classic`)
trendLen (int) : series int Look‑back bars for trend factor (default 3)
Returns: VProf freshly initialised profile
method clone(self)
Create a deep copy of the volume profile.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object to copy
Returns: VProf A new, independent copy of the profile
method clear(self)
Reset all bucket tallies while keeping configuration intact.
Namespace types: VProf
Parameters:
self (VProf) : VProf profile object
Returns: VProf cleared profile (chaining)
method merge(self, srcABuy, srcASell, srcRangeUp, srcRangeLo, srcCvd, srcCvdHi, srcCvdLo)
Merges volume data from a source profile into the current profile.
If resizing is needed, it performs a high-fidelity re-bucketing of existing
volume using a linear interpolation model inferred from neighboring buckets,
preventing aliasing artifacts and ensuring accurate volume preservation.
Namespace types: VProf
Parameters:
self (VProf) : VProf The target profile object to merge into.
srcABuy (array) : array The source profile's buy volume bucket array.
srcASell (array) : array The source profile's sell volume bucket array.
srcRangeUp (float) : series float The upper price bound of the source profile.
srcRangeLo (float) : series float The lower price bound of the source profile.
srcCvd (float) : series float The final Cumulative Volume Delta (CVD) value of the source profile.
srcCvdHi (float) : series float The historical high-water mark of the CVD from the source profile.
srcCvdLo (float) : series float The historical low-water mark of the CVD from the source profile.
Returns: VProf `self` (chaining), now containing the merged data.
method addBar(self, offset)
Add current bar’s volume to the profile (call once per realtime bar).
classic mode: allocates all volume to the close bucket and classifies
by `close >= open`. PDF mode: distributes volume across buckets by the
estimator’s CDF mass. For `split = dynamic`, the buy/sell share per
price is computed via context-driven piecewise s(u).
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
offset (int) : series int To offset the calculated bar
Returns: VProf `self` (method chaining)
method setBuckets(self, buckets)
Sets the number of buckets for the volume profile.
Behavior depends on the `isDynamic` flag.
- If `dynamic = true`: Works on filled profiles by re-bucketing to a new resolution.
- If `dynamic = false`: Only works on empty profiles to prevent accidental changes.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
buckets (int) : series int The new number of buckets
Returns: VProf `self` (chaining)
method setRanges(self, rangeUp, rangeLo)
Sets the price range for the volume profile.
Behavior depends on the `dynamic` flag.
- If `dynamic = true`: Works on filled profiles by re-bucketing existing volume.
- If `dynamic = false`: Only works on empty profiles to prevent accidental changes.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
rangeUp (float) : series float The new upper price bound
rangeLo (float) : series float The new lower price bound
Returns: VProf `self` (chaining)
method setValueArea(self, valueArea)
Set the percentage of volume for the Value Area. If the value
changes, the profile is finalized again.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
valueArea (int) : series int The new Value Area percentage (0..100)
Returns: VProf `self` (chaining)
method getBktBuyVol(self, idx)
Get Buy volume of a bucket.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
idx (int) : series int Bucket index
Returns: series float Buy volume ≥ 0
method getBktSellVol(self, idx)
Get Sell volume of a bucket.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
idx (int) : series int Bucket index
Returns: series float Sell volume ≥ 0
method getBktBnds(self, idx)
Get Bounds of a bucket.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
idx (int) : series int Bucket index
Returns:
up series float The upper price bound of the bucket.
lo series float The lower price bound of the bucket.
method getPoc(self)
Get POC information.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
Returns:
pocIndex series int The index of the Point of Control (POC) bucket.
pocPrice. series float The mid-price of the Point of Control (POC) bucket.
method getVA(self)
Get Value Area (VA) information.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object
Returns:
vaUpIndex series int The index of the upper bound bucket of the Value Area.
vaUpPrice series float The upper price bound of the Value Area.
vaLoIndex series int The index of the lower bound bucket of the Value Area.
vaLoPrice series float The lower price bound of the Value Area.
method getMedian(self)
Get the profile's median price and its bucket index. Calculates the value on-demand if stale.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns:
medianIndex series int The index of the bucket containing the Median.
medianPrice series float The Median price of the profile.
method getVwap(self)
Get the profile's VWAP and its bucket index. Calculates the value on-demand if stale.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns:
vwapIndex series int The index of the bucket containing the VWAP.
vwapPrice series float The Volume Weighted Average Price of the profile.
method getStdDev(self)
Get the profile's volume-weighted standard deviation. Calculates the value on-demand if stale.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns: series float The Standard deviation of the profile.
method getSkewness(self)
Get the profile's skewness. Calculates the value on-demand if stale.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns: series float The Skewness of the profile.
method getKurtosis(self)
Get the profile's excess kurtosis. Calculates the value on-demand if stale.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns: series float The Kurtosis of the profile.
method getSegments(self)
Get the profile's fundamental unimodal segments. Calculates on-demand if stale.
Uses a parameter-free, pivot-based recursive algorithm.
Namespace types: VProf
Parameters:
self (VProf) : VProf The profile object.
Returns: matrix A 2-column matrix where each row is an pair.
method getCvd(self)
Cumulative Volume Delta (CVD) like metric over all buckets.
Namespace types: VProf
Parameters:
self (VProf) : VProf Profile object.
Returns:
cvd series float The final Cumulative Volume Delta (Total Buy Vol - Total Sell Vol).
cvdHi series float The running high-water mark of the CVD as volume was added.
cvdLo series float The running low-water mark of the CVD as volume was added.
VProf
VProf Bucketed Buy/Sell volume profile plus meta information.
Fields:
buckets (series int) : int Number of price buckets (granularity ≥1)
rangeUp (series float) : float Upper price range (absolute)
rangeLo (series float) : float Lower price range (absolute)
dynamic (series bool) : bool Flag for dynamic adaption of profile ranges
valueArea (series int) : int Percentage of total volume to include in the Value Area (1..100)
allot (series AllotMode) : AllotMode Allocation mode `classic` or `pdf`
estimator (series PriceEst enum from AustrianTradingMachine/LibBrSt/1) : LibBrSt.PriceEst Price density model when `model == PDF`
cdfSteps (series int) : int Simpson integration resolution (even ≥2)
split (series SplitMode) : SplitMode Buy/Sell split strategy per bar
trendLen (series int) : int Look‑back length for trend factor (≥1)
maxBkt (series int) : int User-defined number of buckets (unclamped)
aBuy (array) : array Buy volume per bucket
aSell (array) : array Sell volume per bucket
cvd (series float) : float Final Cumulative Volume Delta (Total Buy Vol - Total Sell Vol).
cvdHi (series float) : float Running high-water mark of the CVD as volume was added.
cvdLo (series float) : float Running low-water mark of the CVD as volume was added.
poc (series int) : int Index of max‑volume bucket (POC). Is `na` until calculated.
vaUp (series int) : int Index of upper Value‑Area bound. Is `na` until calculated.
vaLo (series int) : int Index of lower value‑Area bound. Is `na` until calculated.
median (series float) : float Median price of the volume distribution. Is `na` until calculated.
vwap (series float) : float Profile VWAP (Volume Weighted Average Price). Is `na` until calculated.
stdDev (series float) : float Standard Deviation of volume around the VWAP. Is `na` until calculated.
skewness (series float) : float Skewness of the volume distribution. Is `na` until calculated.
kurtosis (series float) : float Excess Kurtosis of the volume distribution. Is `na` until calculated.
segments (matrix) : matrix A 2-column matrix where each row is an pair. Is `na` until calculated.
Realtime 5D Profile [LucF]█ OVERVIEW
This indicator displays a realtime profile that can be configured to visualize five dimensions: volume, price, time, activity and age. For each price level in a bar or timeframe, you can display total or delta volume or ticks. The tick count measures activity on a level. The thickness of each level's line indicates its age, which helps you identify the most recent levels.
█ WARNING
The indicator only works in real time. Contrary to TradingView's line of volume profile indicators , it does not show anything on historical bars or closed markets, and it cannot display volume information if none exists for the data feed the chart is using. A realtime indicator such as this one only displays information accumulated while it is running on a chart. The information it calculates cannot be saved on charts, nor can it be recalculated from historical bars. If you refresh the chart, or the script must re-execute for some reason, as when you change inputs, the accumulated information will be lost.
Because "Realtime 5D Profile" requires time to accumulate information on the chart, it will be most useful to traders working on small timeframes who trade only one instrument and do not frequently change their chart's symbol or timeframe. Traders working on higher timeframes or constantly changing charts will be better served by TradingView's volume profiles. Before using this indicator, please see the "Limitations" section further down for other important information.
█ HOW TO USE IT
Load the indicator on an active chart (see here if you don't know how).
The default configuration displays:
• A double-sided volume profile showing at what price levels activity has occurred.
• The left side shows "down" volume, the right side shows "up" volume.
• The value corresponding to each level is displayed.
• The width of lines reflects their relative value.
• The thickness of lines reflects their age. Four thicknesses are used, with the thicker lines being the most recent.
• The total value of down/up values for the profile appears at the top.
To understand how to use profiles in your trading, please research the subject. Searches on "volume profile" or "market profile" will yield many useful results. I provide you with tools — I do not teach trading. To understand more about this indicator, read on. If you choose not to do so, please don't ask me to answer questions that are already answered here, nor to make videos; I don't.
█ CONCEPTS
Delta calculations
Volume is slotted in up or down slots depending on whether the price of each new chart update is higher or lower than the previous update's price. When price does not move between chart updates, the last known direction is used. In a perfect world, Pine scripts would have access to bid and ask levels, as this would allow us to know for sure if market orders are being filled on upticks (at the ask) or downticks (at the bid). Comparing the price of successive chart updates provides the most precise way to calculate volume delta on TradingView, but it is still a compromise. Order books are in constant movement; in some cases, order cancellations can cause sudden movements of both the bid and ask levels such that the next chart update can occur on an uptick at a lower price than the previous one (or vice versa). While this update's volume should be slotted in the up slot because a buy market order was filled, it will erroneously be slotted in the down slot because the price of the chart's update is lower than that of the previous one. Luckily, these conditions are relatively rare, so they should not adversely affect calculations.
Levels
A profile is a tool that displays information organized by price levels. You can select the maximum quantity of levels this indicator displays by using the script's "Levels" input. If the profile's height is small enough for level increments to be less than the symbol's tick size, a smaller quantity of levels is used until the profile's height grows sufficiently to allow your specified quantity of levels to be displayed. The exact position of levels is not tethered to the symbol's tick increments. Activity for one level is that which happens on either side of the level, halfway between its higher or lower levels. The lowest/highest levels in the profile thus appear higher/lower than the profile's low/high limits, which are determined by the lowest/highest points reached by price during the profile's life.
Level Values and Length
The profile's vertical structure is dynamic. As the profile's height changes with the price range, it is rebalanced and the price points of its levels may be recalculated. When this happens, past updates will be redistributed among the new profile's levels, and the level values may thus change. The new levels where updates are slotted will of course always be near past ones, but keep this fluidity in mind when watching level values evolve.
The profile's horizontal structure is also dynamic. The maximum length of level lines is controlled by the "Maximum line length" input value. This maximum length is always used for the largest level value in the profile, and the length of other levels is determined by their value relative to that maximum.
Updates vs Ticks
Strictly speaking, a tick is the record of a transaction between two parties. On TradingView, these are detected on seconds charts. On other charts, ticks are aggregated to form a chart update . I use the broader "update" term when it names both events. Note that, confusingly, tick is also used to name an instrument's minimal price increment.
Volume Quality
If you use volume, it's important to understand its nature and quality, as it varies with sectors and instruments. My Volume X-ray indicator is one way you can appraise the quality of an instrument's intraday volume.
█ FEATURES
Double-Sided Profiles
When you choose one of the first two configuration selections in the "Configuration" field's dropdown menu, you are asking the indicator to display a double-sided profile, i.e., where the down values appear on the left and the up ones on the right. In this mode, the formatting options in the top section of inputs apply to both sides of the profile.
Single-Sided Profiles
The six other selections down the "Configuration" field's dropdown menu select single-sided profiles, where one side aggregates the up/down values for either volume or ticks. In this mode, the formatting options in the top section of inputs apply to the left profile. The ones in the following "Right format" section apply to the right profile.
Calculation Mode
The "Calculation" input field allows the selection of one of two modes which applies to single-sided profiles only. Values can represent the simple total of volume or ticks at each level, or their delta. The mode has no effect when a double-sided profile is used because then, the total is represented by the sum of the left and right sides. Note that when totals are selected, all levels appear in the up color.
Age
The age of each level is always displayed as one of four line thicknesses. Thicker lines are used for the youngest levels. The age of levels is determined by averaging the times of the updates composing that level. When viewing double-sided profiles, the age of each side is calculated independently, which entails you can have a down level on the left side of the profile appear thinner than its corresponding up side level line on the right side because the updates composing the up side are more recent. When calculating the age of single-sided profiles, the age of the up/down values aggregated to calculate the side are averaged. Since they may be different, the averaged level ages will not be as responsive as when using a double-sided profile configuration, where the age of levels on each side is calculated independently and follows price action more closely. Moreover, when displaying two single-sided profiles (volume on one side and ticks on the other), the age of both sides will match because they are calculated from the same realtime updates.
Profile Resets
The profile can reset on timeframes or trend changes. The usual timeframe selections are available, including the chart's, in which case the profile will reset on each new chart bar. One of two trend detection logics can be used: Supertrend or the one used by LazyBear in his Weis Wave indicator . Settings for the trend logics are in the bottommost section of the inputs, where you can also control the display of trend changes and states. Note that the "Timeframe" field's setting also applies to the trend detection mechanism. Whatever the timeframe used for trend detection, its logic will not repaint.
Format
Formatting a profile for charts is often a challenge for traders, and this one is no exception. Varying zoom factors on your chart and the frequency of profile resets will require different profile formats. You can achieve a reasonable variety of effects by playing with the following input fields:
• "Resets on" controls how frequently new profiles are drawn. Spacing out profiles between bars can help make them more usable.
• "Levels" determines the maximum quantity of levels displayed.
• "Offset" allows you to shift the profile horizontally.
• "Profile size" affects the global size of the profile.
• Another "Size" field provides control over the size of the totals displayed above the profile.
• "Maximum line length" controls how far away from the center of the bar the lines will stretch left and right.
Colors
The color and brightness of levels and totals always allows you to determine the winning side between up and down values. On double-sided profiles, each side is always of one color, since the left side is down values and the right side, up values. However, the losing side is colored with half its brightness, so the emphasis is put on the winning side. When there is no winner, the toned-down version of each color is used for both sides. Single-sided profiles use the up and down colors in full brightness on the same side. Which one is used reflects the winning side.
Candles
The indicator can color candle bodies and borders independently. If you choose to do so, you may want to disable the chart's bars by using the eye icon near the symbol's name.
Tooltips
A tooltip showing the value of each level is available. If they do not appear when hovering over levels, select the indicator by clicking on its chart name. This should get the tooltips working.
Data Window
As usual, I provide key values in the Data Window, so you can track them. If you compare total realtime volumes for the profile and the built-in "Volume" indicator, you may see variations at some points. They are due to the different mechanisms running each program. In my experience, the values from the built-in don't always update as often as those of the profile, but they eventually catch up.
█ LIMITATIONS
• The levels do not appear exactly at the position they are calculated. They are positioned slightly lower than their actual price levels.
• Drawing a 20-level double-sided profile with totals requires 42 labels. The script will only display the last 500 labels,
so the number of levels you choose affects how many past profiles will remain visible.
• The script is quite taxing, which will sometimes make the chart's tab less responsive.
• When you first load the indicator on a chart, it will begin calculating from that moment; it will not take into account prior chart activity.
• If you let the script run long enough when using profile reset criteria that make profiles last for a long time, the script will eventually run out of memory,
as it will be tracking unmanageable amounts of chart updates. I don't know the exact quantity of updates that will cause this,
but the script can handle upwards of 60K updates per profile, which should last 1D except on the most active markets. You can follow the number of updates in the Data Window.
• The indicator's nature makes it more useful at very small timeframes, typically in the sub 15min realm.
• The Weis Wave trend detection used here has nothing to do with how David Weis detects trend changes.
LazyBear's version was a port of a port, so we are a few generations removed from the Weis technique, which uses reversals by a price unit.
I believe the version used here is useful nonetheless because it complements Supertrend rather well.
█ NOTES
The aggregated view that volume and tick profiles calculate for traders is a good example of one of the most useful things software can do for traders: look at things from a methodical, mathematical perspective, and present results in a meaningful way. Profiles are powerful because, if the volume data they use is of good enough quality, they tell us what levels are important for traders, regardless of the nature or rationality of the methods traders have used to determine those levels. Profiles don't care whether traders use the news, fundamentals, Fib numbers, pivots, or the phases of the moon to find "their" levels. They don't attempt to forecast or explain markets. They show us real stuff containing zero uncertainty, i.e., what HAS happened. I like this.
The indicator's "VPAA" chart name represents four of the five dimensions the indicator displays: volume, price, activity and age. The time dimension is implied by the fact it's a profile — and I couldn't find a proper place for a "T" in there )
I have not included alerts in the script. I may do so in the future.
For the moment, I have no plans to write a profile indicator that works on historical bars. TradingView's volume profiles already do that, and they run much faster than Pine versions could, so I don't see the point in spending efforts on a poor ersatz.
For Pine Coders
• The script uses labels that draw varying quantities of characters to break the limitation constraining other Pine plots/lines to bar boundaries.
• The code's structure was optimized for performance. When it was feasible, global arrays, "input" and other variables were used from functions,
sacrificing function readability and portability for speed. Code was also repeated in some places, to avoid the overhead of frequent function calls in high-traffic areas.
• I wrote my script using the revised recommendations in the Style Guide from the Pine v5 User Manual.
█ THANKS
• To Duyck for his function that sorts an array while keeping it in synch with another array.
The `sortTwoArrays()` function in my script is derived from the Pine Wizard 's code.
• To the one and only Maestro, RicardoSantos , the creative volcano who worked hard to write a function to produce fixed-width, figure space-padded numeric values.
A change in design made the function unnecessary in this script, but I am grateful to you nonetheless.
• To midtownskr8guy , another Pine Wizard who is also a wizard with colors. I use the colors from his Pine Color Magic and Chart Theme Simulator constantly.
• Finally, thanks to users of my earlier "Delta Volume" scripts. Comments and discussions with them encouraged me to persist in figuring out how to achieve what this indicator does.
LibVeloLibrary "LibVelo"
This library provides a sophisticated framework for **Velocity
Profile (Flow Rate)** analysis. It measures the physical
speed of trading at specific price levels by relating volume
to the time spent at those levels.
## Core Concept: Market Velocity
Unlike Volume Profiles, which only answer "how much" traded,
Velocity Profiles answer "how fast" it traded.
It is calculated as:
`Velocity = Volume / Duration`
This metric (contracts per second) reveals hidden market
dynamics invisible to pure Volume or TPO profiles:
1. **High Velocity (Fast Flow):**
* **Aggression:** Initiative buyers/sellers hitting market
orders rapidly.
* **Liquidity Vacuum:** Price slips through a level because
order book depth is thin (low resistance).
2. **Low Velocity (Slow Flow):**
* **Absorption:** High volume but very slow price movement.
Indicates massive passive limit orders ("Icebergs").
* **Apathy:** Little volume over a long time. Lack of
interest from major participants.
## Architecture: Triple-Engine Composition
To ensure maximum performance while offering full statistical
depth for all metrics, this library utilises **object
composition** with a lazy evaluation strategy:
#### Engine A: The Master (`vpVol`)
* **Role:** Standard Volume Profile.
* **Purpose:** Maintains the "ground truth" of volume distribution,
price buckets, and ranges.
#### Engine B: The Time Container (`vpTime`)
* **Role:** specialized container for time duration (in ms).
* **Hack:** It repurposes standard volume arrays (specifically
`aBuy`) to accumulate time duration for each bucket.
#### Engine C: The Calculator (`vpVelo`)
* **Role:** Temporary scratchpad for derived metrics.
* **Purpose:** When complex statistics (like Value Area or Skewness)
are requested for **Velocity**, this engine is assembled
on-demand to leverage the full statistical power of `LibVPrf`
without rewriting complex algorithms.
---
**DISCLAIMER**
This library is provided "AS IS" and for informational and
educational purposes only. It does not constitute financial,
investment, or trading advice.
The author assumes no liability for any errors, inaccuracies,
or omissions in the code. Using this library to build
trading indicators or strategies is entirely at your own risk.
As a developer using this library, you are solely responsible
for the rigorous testing, validation, and performance of any
scripts you create based on these functions. The author shall
not be held liable for any financial losses incurred directly
or indirectly from the use of this library or any scripts
derived from it.
create(buckets, rangeUp, rangeLo, dynamic, valueArea, allot, estimator, cdfSteps, split, trendLen)
Construct a new `Velo` controller, initializing its engines.
Parameters:
buckets (int) : series int Number of price buckets ≥ 1.
rangeUp (float) : series float Upper price bound (absolute).
rangeLo (float) : series float Lower price bound (absolute).
dynamic (bool) : series bool Flag for dynamic adaption of profile ranges.
valueArea (int) : series int Percentage for Value Area (1..100).
allot (series AllotMode) : series AllotMode Allocation mode `Classic` or `PDF` (default `PDF`).
estimator (series PriceEst enum from AustrianTradingMachine/LibBrSt/1) : series PriceEst PDF model for distribution attribution (default `Uniform`).
cdfSteps (int) : series int Resolution for PDF integration (default 20).
split (series SplitMode) : series SplitMode Buy/Sell split for the master volume engine (default `Classic`).
trendLen (int) : series int Look‑back for trend factor in dynamic split (default 3).
Returns: Velo Freshly initialised velocity profile.
method clone(self)
Create a deep copy of the composite profile.
Namespace types: Velo
Parameters:
self (Velo) : Velo Profile object to copy.
Returns: Velo A completely independent clone.
method clear(self)
Reset all engines and accumulators.
Namespace types: Velo
Parameters:
self (Velo) : Velo Profile object to clear.
Returns: Velo Cleared profile (chaining).
method merge(self, srcVolBuy, srcVolSell, srcTime, srcRangeUp, srcRangeLo, srcVolCvd, srcVolCvdHi, srcVolCvdLo)
Merges external data (Volume and Time) into the current profile.
Automatically handles resizing and re-bucketing if ranges differ.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
srcVolBuy (array) : array Source Buy Volume bucket array.
srcVolSell (array) : array Source Sell Volume bucket array.
srcTime (array) : array Source Time bucket array (ms).
srcRangeUp (float) : series float Upper price bound of the source data.
srcRangeLo (float) : series float Lower price bound of the source data.
srcVolCvd (float) : series float Source Volume CVD final value.
srcVolCvdHi (float) : series float Source Volume CVD High watermark.
srcVolCvdLo (float) : series float Source Volume CVD Low watermark.
Returns: Velo `self` (chaining).
method addBar(self, offset)
Main data ingestion. Distributes Volume and Time to buckets.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
offset (int) : series int Offset of the bar to add (default 0).
Returns: Velo `self` (chaining).
method setBuckets(self, buckets)
Sets the number of buckets for the profile.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
buckets (int) : series int New number of buckets.
Returns: Velo `self` (chaining).
method setRanges(self, rangeUp, rangeLo)
Sets the price range for the profile.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
rangeUp (float) : series float New upper price bound.
rangeLo (float) : series float New lower price bound.
Returns: Velo `self` (chaining).
method setValueArea(self, va)
Set the percentage of volume/time for the Value Area.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
va (int) : series int New Value Area percentage (0..100).
Returns: Velo `self` (chaining).
method getBuckets(self)
Returns the current number of buckets in the profile.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: series int The number of buckets.
method getRanges(self)
Returns the current price range of the profile.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns:
rangeUp series float The upper price bound of the profile.
rangeLo series float The lower price bound of the profile.
method getArrayBuyVol(self)
Returns the internal raw data array for **Buy Volume** directly.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: array The internal array for buy volume.
method getArraySellVol(self)
Returns the internal raw data array for **Sell Volume** directly.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: array The internal array for sell volume.
method getArrayTime(self)
Returns the internal raw data array for **Time** (in ms) directly.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: array The internal array for time duration.
method getArrayBuyVelo(self)
Returns the internal raw data array for **Buy Velocity** directly.
Automatically executes _assemble() if data is dirty.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: array The internal array for buy velocity.
method getArraySellVelo(self)
Returns the internal raw data array for **Sell Velocity** directly.
Automatically executes _assemble() if data is dirty.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
Returns: array The internal array for sell velocity.
method getBucketBuyVol(self, idx)
Returns the **Buy Volume** of a specific bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns: series float The buy volume.
method getBucketSellVol(self, idx)
Returns the **Sell Volume** of a specific bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns: series float The sell volume.
method getBucketTime(self, idx)
Returns the raw accumulated time (in ms) spent in a specific bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns: series float The time in milliseconds.
method getBucketBuyVelo(self, idx)
Returns the **Buy Velocity** (Aggressive Buy Flow) of a bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns: series float The buy velocity in .
method getBucketSellVelo(self, idx)
Returns the **Sell Velocity** (Aggressive Sell Flow) of a bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns: series float The sell velocity in .
method getBktBnds(self, idx)
Returns the price boundaries of a specific bucket.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
idx (int) : series int The index of the bucket.
Returns:
up series float The upper price bound of the bucket.
lo series float The lower price bound of the bucket.
method getPoc(self, target)
Returns Point of Control (POC) information for the specified target metric.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns:
pocIdx series int The index of the POC bucket.
pocPrice series float The mid-price of the POC bucket.
method getVA(self, target)
Returns Value Area (VA) information for the specified target metric.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns:
vaUpIdx series int The index of the upper VA bucket.
vaUpPrice series float The upper price bound of the VA.
vaLoIdx series int The index of the lower VA bucket.
vaLoPrice series float The lower price bound of the VA.
method getMedian(self, target)
Returns the Median price for the specified target metric distribution.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns:
medianIdx series int The index of the bucket containing the median.
medianPrice series float The median price.
method getAverage(self, target)
Returns the weighted average price (VWAP/TWAP) for the specified target.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns:
avgIdx series int The index of the bucket containing the average.
avgPrice series float The weighted average price.
method getStdDev(self, target)
Returns the standard deviation for the specified target distribution.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns: series float The standard deviation.
method getSkewness(self, target)
Returns the skewness for the specified target distribution.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns: series float The skewness.
method getKurtosis(self, target)
Returns the excess kurtosis for the specified target distribution.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns: series float The excess kurtosis.
method getSegments(self, target)
Returns the fundamental unimodal segments for the specified target metric.
Calculates on-demand if the target is 'Velocity' and data changed.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns: matrix A 2-column matrix where each row is an pair.
method getCvd(self, target)
Returns Cumulative Volume/Velo Delta (CVD) information for the target metric.
Namespace types: Velo
Parameters:
self (Velo) : Velo The profile object.
target (series Metric) : Metric The data aspect to analyse (Volume, Time, Velocity).
Returns:
cvd series float The final delta value.
cvdHi series float The historical high-water mark of the delta.
cvdLo series float The historical low-water mark of the delta.
Velo
Velo Composite Velocity Profile Controller.
Fields:
_vpVol (VPrf type from AustrianTradingMachine/LibVPrf/2) : LibVPrf.VPrf Engine A: Master Volume source.
_vpTime (VPrf type from AustrianTradingMachine/LibVPrf/2) : LibVPrf.VPrf Engine B: Time duration container (ms).
_vpVelo (VPrf type from AustrianTradingMachine/LibVPrf/2) : LibVPrf.VPrf Engine C: Scratchpad for velocity stats.
_aTime (array) : array Pointer alias to `vpTime.aBuy` (Time storage).
_valueArea (series float) : int Percentage of total volume to include in the Value Area (1..100)
_estimator (series PriceEst enum from AustrianTradingMachine/LibBrSt/1) : LibBrSt.PriceEst PDF model for distribution attribution.
_allot (series AllotMode) : AllotMode Attribution model (Classic or PDF).
_cdfSteps (series int) : int Integration resolution for PDF.
_isDirty (series bool) : bool Lazy evaluation flag for vpVelo.






















